modf関数は、指定された浮動小数点実数を整数と小数に変換した値を求めます。
#include <math.h>
double modf(double x, double *iptr);
xは浮動小数点実数の値を指定します。
*iptrは変換した整数部分の値を格納する変数のアドレスを指定します。
戻り値として、小数部分の値を返します。
modf関数は、引数xを整数部分と小数部分に分割しますが、この2つの値は共にxと同じ符号を持っています。また、小数部分は戻り値として返り、整数部分は iptrに格納されます。
プログラム 例
#include <stdio.h>
#include <math.h>
int main(void)
{
int loop_cnt;
double x;
double iptr;
double f;
for (loop_cnt = 1; loop_cnt <= 5; ++loop_cnt) {
printf('実数の値を入力してください ==> ');
scanf('%lf', &x);
f = modf(x, &iptr);
printf('%f = %f + %f\n', x, f, iptr);
}
return 0;
}
例の実行結果
$ ./modf.exe 実数の値を入力してください ==> 1.23 1.230000 = 0.230000 + 1.000000 実数の値を入力してください ==> -1.23 -1.230000 = -0.230000 + -1.000000 実数の値を入力してください ==> 123.456 123.456000 = 0.456000 + 123.000000 実数の値を入力してください ==> 0.123 0.123000 = 0.123000 + 0.000000 実数の値を入力してください ==> -0.123 -0.123000 = -0.123000 + -0.000000 $